草庐IT

TypeScript 运算符

全部标签

c++ - C++ 中的 << 运算符在做什么?

在下面的示例中,到底是什么?运营商在做什么?我猜它不是按位运算符。std::cout我了解代码将在此处执行的操作:使用标准输出、发送此文本、发送行尾。只是我从来没有遇到过使用这个我刚开始使用C++。而且,作为某种运营商,很难搜索对此的描述及其含义。有人可以启发我和/或指导我使用google搜索什么吗?谢谢罗斯 最佳答案 答案是:默认情况下,运算符对整数类型进行左移,但可以重载它以执行您想要的任何操作!这种将字符串通过管道传输到流中的语法首先(我认为)在C++发明者BjarneStroustroup的同名书籍中得到了演示TheC++P

c++ - 条件中的逗号运算符

我已经阅读了很多地方,但我真的无法理解条件中指定的行为。我知道在赋值中它会计算第一个操作数,丢弃结果,然后计算第二个操作数。但是对于这段代码,它应该做什么?CPartFile*partfile=(CPartFile*)lParam;ASSERT(partfile!=NULL);boolbDeleted=false;if(partfile,bDeleted)partfile->PerformFileCompleteEnd(wParam);IF中的partfile是不必要的参数,还是有任何意义? 最佳答案 在这种情况下,它是一个不必要的

c++ - typeid 运算符返回的对象的生命周期是多少?

如果我调用typeid并检索返回的type_info的地址:consttype_info*info=&(typeid(Something));typeid返回的对象的生命周期是多少?指向该对象的指针将保持多长时间有效? 最佳答案 无论实现如何实现它们,typeid表达式的结果都是左值,这些左值引用的对象的生命周期必须持续到程序结束。来自ISO/IEC14882:20035.2.8[expr.typeid]:Theresultofatypeidexpressionisanlvalue[...]Thelifetimeoftheobjec

c++ - 为什么重载赋值运算符会返回对类的引用?

classitem{public:item&operator=(constitem&rh){......return*this;}};下面的签名有错吗?voidoperator=(constitem&rh);itema,b;a=b;//equivalenttoa.operator=(b);sothereisnoneedtoreturnthis. 最佳答案 这不是“错误”,而是令人惊讶。赋值计算为目标对象。这就是内置的含义。如果您为自己的类(class)定义不同,人们可能会感到困惑。例子:intc;while((c=getchar()

c++ - 我如何着手重载 C++ 运算符以允许链接?

我和我之前的许多程序员一样,正在拼命编写C++中的通过权矩阵类。我从来没有做过非常严重的运算符重载,这是导致问题的原因。本质上,通过单步执行这就是我所说的导致问题的原因。cMatrixKev=CT::cMatrix::GetUnitMatrix(4,true);Kev*=4.0f;cMatrixBaz=Kev;Kev=Kev+Baz;//HERE!根据调试器,似乎正在发生的事情是添加了Kev和Baz,但随后值丢失了,当涉及到重新分配给Kev时,内存只是其默认的不可靠值。我如何重载我的运算符(operator)以允许此声明?我的(精简的)代码如下。//headerclasscMatrix

c++ - 是 。和 -> 在 C 和 C++ 中真的是运算符吗?

您可能一直在努力,自己也在努力,那.和->是运算符,用于检索结构(C)或类(C++)的成员。但是,我怀疑它们是运算符-因为,如果它们是运算符,它们的输入类型是什么?此外,两侧的标识符是相互依赖的-这是+运算符所缺乏的特征。如果这是正确的-在什么意义上这些在实践中仍然被标记为运算符,以及它们在语言理论方面的正式定义是什么。 最佳答案 您假设唯一可以作为参数传递给运算符的类型是可以在语言中定义的类型。我认为编译器可以识别的任何类型都可以作为参数传递,包括内部类型,例如“标识符”。该运算符在其AST表示中将有两个参数,这足以让您定义语义。

c++ - 重载运算符 << - C++

背景我有一个在内部使用vector的容器类。我已经为这个包装类提供了一个方法AddChar(std::string),它对内部vector执行push_back()。在我的代码中,有时我必须向容器中添加多个项目。为此,我必须使用container.AddChar("First");container.AddChar("Second");这会使代码变大。所以为了让它更容易,我打算重载运算符container两个项目将被添加到基础vector中。这是我使用的代码classExtendedVector{private:vectorcontainer;public:friendExtended

运算符 == 的 C++ 模板类错误

错误:errorC2678:二进制“==”:没有找到接受类型为“constentry”的左手操作数的运算符(或者没有可接受的转换)函数:templateintindexList::search(constT&target)const{for(inti=0;iindexList.hindexList.cpp这应该是一个重载运算符吗?作为模板类,我不确定我是否理解错误?解决方案-类中的重载函数现在声明为const://Operatorsboolentry::operator==(constentry&dE)const 最佳答案 首先按原

c++ - C++ 中用于矩阵的运算符 +

我假设矩阵的+运算符的天真实现(例如2D)在C++中将是:classMatrix{Matrixoperator+(constMatrix&other)const{Matrixresult;//fillresultwith*this.dataplusother.datareturnresult;}}所以我们可以像这样使用它Matrixa;Matrixb;Matrixc;c=a+b;对吧?但是如果矩阵很大,那么效率不高,因为我们正在做一个不必要的拷贝(返回结果)。因此,如果我们不想提高效率,就必须忘记干净的调用:c=a+b;对吧?你会建议/喜欢什么?谢谢。 最佳

c++ - 内联一个重载的运算符c++

如果必须频繁使用该运算符,是否可以/是否必须内联该运算符以获得更高的效率(时间或其他)?我想重载“+”运算符以在我的代码中非常频繁地添加大vector。因此问题。 最佳答案 理想情况下,您先分析您的代码,然后再决定要内联什么。当您决定内联常规运算符与重载运算符之间确实没有太大区别。 关于c++-内联一个重载的运算符c++,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/752139